@twin.org/node 0.0.3-next.29 → 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",
@@ -3503,7 +3809,7 @@
3503
3809
  "content": {
3504
3810
  "application/json": {
3505
3811
  "schema": {
3506
- "$ref": "#/components/schemas/ConflictResponse"
3812
+ "$ref": "#/components/schemas/Error"
3507
3813
  },
3508
3814
  "examples": {
3509
3815
  "exampleResponse": {
@@ -9603,6 +9909,11 @@
9603
9909
  "examples": {
9604
9910
  "auditableItemGraphCreateRequestExample": {
9605
9911
  "value": {
9912
+ "@context": [
9913
+ "https://schema.twindev.org/aig/",
9914
+ "https://schema.twindev.org/common/"
9915
+ ],
9916
+ "type": "AuditableItemGraphVertex",
9606
9917
  "annotationObject": {
9607
9918
  "@context": "https://schema.org",
9608
9919
  "@type": "Note",
@@ -9610,6 +9921,7 @@
9610
9921
  },
9611
9922
  "aliases": [
9612
9923
  {
9924
+ "type": "AuditableItemGraphAlias",
9613
9925
  "id": "bar456",
9614
9926
  "annotationObject": {
9615
9927
  "@context": "https://schema.org",
@@ -9618,6 +9930,7 @@
9618
9930
  }
9619
9931
  },
9620
9932
  {
9933
+ "type": "AuditableItemGraphAlias",
9621
9934
  "id": "foo321",
9622
9935
  "annotationObject": {
9623
9936
  "@context": "https://schema.org",
@@ -9628,6 +9941,7 @@
9628
9941
  ],
9629
9942
  "resources": [
9630
9943
  {
9944
+ "type": "AuditableItemGraphResource",
9631
9945
  "id": "resource1",
9632
9946
  "resourceObject": {
9633
9947
  "@context": "https://schema.org",
@@ -9636,6 +9950,7 @@
9636
9950
  }
9637
9951
  },
9638
9952
  {
9953
+ "type": "AuditableItemGraphResource",
9639
9954
  "id": "resource2",
9640
9955
  "resourceObject": {
9641
9956
  "@context": "https://schema.org",
@@ -9646,6 +9961,7 @@
9646
9961
  ],
9647
9962
  "edges": [
9648
9963
  {
9964
+ "type": "AuditableItemGraphEdge",
9649
9965
  "targetId": "aig:1234567890",
9650
9966
  "edgeRelationships": [
9651
9967
  "frenemy"
@@ -9657,6 +9973,7 @@
9657
9973
  }
9658
9974
  },
9659
9975
  {
9976
+ "type": "AuditableItemGraphEdge",
9660
9977
  "targetId": "aig:45678901234",
9661
9978
  "edgeRelationships": [
9662
9979
  "end"
@@ -10267,6 +10584,11 @@
10267
10584
  "examples": {
10268
10585
  "auditableItemGraphUpdateRequestExample": {
10269
10586
  "value": {
10587
+ "@context": [
10588
+ "https://schema.twindev.org/aig/",
10589
+ "https://schema.twindev.org/common/"
10590
+ ],
10591
+ "type": "AuditableItemGraphVertex",
10270
10592
  "annotationObject": {
10271
10593
  "@context": "https://schema.org",
10272
10594
  "@type": "Note",
@@ -10274,6 +10596,7 @@
10274
10596
  },
10275
10597
  "aliases": [
10276
10598
  {
10599
+ "type": "AuditableItemGraphAlias",
10277
10600
  "id": "bar456",
10278
10601
  "annotationObject": {
10279
10602
  "@context": "https://schema.org",
@@ -10282,6 +10605,7 @@
10282
10605
  }
10283
10606
  },
10284
10607
  {
10608
+ "type": "AuditableItemGraphAlias",
10285
10609
  "id": "foo321",
10286
10610
  "annotationObject": {
10287
10611
  "@context": "https://schema.org",
@@ -10292,6 +10616,7 @@
10292
10616
  ],
10293
10617
  "resources": [
10294
10618
  {
10619
+ "type": "AuditableItemGraphResource",
10295
10620
  "id": "resource1",
10296
10621
  "resourceObject": {
10297
10622
  "@context": "https://schema.org",
@@ -10300,6 +10625,7 @@
10300
10625
  }
10301
10626
  },
10302
10627
  {
10628
+ "type": "AuditableItemGraphResource",
10303
10629
  "id": "resource2",
10304
10630
  "resourceObject": {
10305
10631
  "@context": "https://schema.org",
@@ -10310,6 +10636,7 @@
10310
10636
  ],
10311
10637
  "edges": [
10312
10638
  {
10639
+ "type": "AuditableItemGraphEdge",
10313
10640
  "id": "edge1",
10314
10641
  "targetId": "aig:1234567890",
10315
10642
  "edgeRelationships": [
@@ -10322,6 +10649,7 @@
10322
10649
  }
10323
10650
  },
10324
10651
  {
10652
+ "type": "AuditableItemGraphEdge",
10325
10653
  "id": "edge2",
10326
10654
  "targetId": "aig:45678901234",
10327
10655
  "edgeRelationships": [
@@ -10943,26 +11271,36 @@
10943
11271
  "content": {
10944
11272
  "application/json": {
10945
11273
  "schema": {
10946
- "$ref": "#/components/schemas/AuditableItemStreamCreateRequest"
11274
+ "$ref": "https://schema.twindev.org/ais/AuditableItemStreamBase"
10947
11275
  },
10948
11276
  "examples": {
10949
11277
  "auditableItemStreamCreateRequestExample": {
10950
11278
  "value": {
11279
+ "@context": [
11280
+ "https://schema.org",
11281
+ "https://schema.twindev.org/ais/",
11282
+ "https://schema.twindev.org/common/"
11283
+ ],
11284
+ "type": "AuditableItemStream",
10951
11285
  "annotationObject": {
10952
11286
  "@context": "https://schema.org",
10953
11287
  "@type": "Note",
10954
11288
  "content": "This is a simple note"
10955
11289
  },
10956
- "entries": [
10957
- {
10958
- "entryObject": {
10959
- "@context": "https://schema.org",
10960
- "@type": "Event",
10961
- "startDate": "2011-04-09T20:00:00Z",
10962
- "description": "A description of the event"
11290
+ "entries": {
11291
+ "type": "ItemList",
11292
+ "itemListElement": [
11293
+ {
11294
+ "type": "AuditableItemStreamEntry",
11295
+ "entryObject": {
11296
+ "@context": "https://schema.org",
11297
+ "@type": "Event",
11298
+ "startDate": "2011-04-09T20:00:00Z",
11299
+ "description": "A description of the event"
11300
+ }
10963
11301
  }
10964
- }
10965
- ]
11302
+ ]
11303
+ }
10966
11304
  }
10967
11305
  }
10968
11306
  }
@@ -11142,6 +11480,7 @@
11142
11480
  "itemListElement": [
11143
11481
  {
11144
11482
  "@context": [
11483
+ "https://schema.org",
11145
11484
  "https://schema.twindev.org/ais/",
11146
11485
  "https://schema.twindev.org/common/"
11147
11486
  ],
@@ -11183,6 +11522,7 @@
11183
11522
  "itemListElement": [
11184
11523
  {
11185
11524
  "@context": [
11525
+ "https://schema.org",
11186
11526
  "https://schema.twindev.org/ais/",
11187
11527
  "https://schema.twindev.org/common/"
11188
11528
  ],
@@ -11315,6 +11655,24 @@
11315
11655
  "style": "simple",
11316
11656
  "example": "ais:1234567890"
11317
11657
  },
11658
+ {
11659
+ "name": "cursor",
11660
+ "description": "Cursor to use for next chunk of entries.",
11661
+ "in": "query",
11662
+ "required": false,
11663
+ "schema": {
11664
+ "type": "string"
11665
+ }
11666
+ },
11667
+ {
11668
+ "name": "limit",
11669
+ "description": "Limit the number of entries to return, only applicable if includeEntries is true.",
11670
+ "in": "query",
11671
+ "required": false,
11672
+ "schema": {
11673
+ "type": "string"
11674
+ }
11675
+ },
11318
11676
  {
11319
11677
  "name": "includeEntries",
11320
11678
  "description": "Whether to include the entries, defaults to false.\nThe entries will be limited to the first page of entries in date descending order.\nIf you want to get more entries you can use the returned cursor with the get entries method.",
@@ -11379,6 +11737,7 @@
11379
11737
  "auditableItemStreamGetResponseExample": {
11380
11738
  "value": {
11381
11739
  "@context": [
11740
+ "https://schema.org",
11382
11741
  "https://schema.twindev.org/ais/",
11383
11742
  "https://schema.twindev.org/common/"
11384
11743
  ],
@@ -11395,25 +11754,28 @@
11395
11754
  "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11396
11755
  "immutableInterval": 10,
11397
11756
  "numberOfItems": 1,
11398
- "entries": [
11399
- {
11400
- "@context": [
11401
- "https://schema.twindev.org/ais/",
11402
- "https://schema.twindev.org/common/"
11403
- ],
11404
- "type": "AuditableItemStreamEntry",
11405
- "id": "tst:1234567890",
11406
- "dateCreated": "2024-08-22T11:55:16.271Z",
11407
- "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11408
- "index": 0,
11409
- "entryObject": {
11410
- "@context": "https://schema.org",
11411
- "@type": "Event",
11412
- "startDate": "2011-04-09T20:00:00Z",
11413
- "description": "A description of the event"
11757
+ "entries": {
11758
+ "type": "ItemList",
11759
+ "itemListElement": [
11760
+ {
11761
+ "@context": [
11762
+ "https://schema.twindev.org/ais/",
11763
+ "https://schema.twindev.org/common/"
11764
+ ],
11765
+ "type": "AuditableItemStreamEntry",
11766
+ "id": "tst:1234567890",
11767
+ "dateCreated": "2024-08-22T11:55:16.271Z",
11768
+ "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11769
+ "index": 0,
11770
+ "entryObject": {
11771
+ "@context": "https://schema.org",
11772
+ "@type": "Event",
11773
+ "startDate": "2011-04-09T20:00:00Z",
11774
+ "description": "A description of the event"
11775
+ }
11414
11776
  }
11415
- }
11416
- ]
11777
+ ]
11778
+ }
11417
11779
  }
11418
11780
  }
11419
11781
  }
@@ -11426,6 +11788,7 @@
11426
11788
  "auditableItemStreamJsonLdGetResponseExample": {
11427
11789
  "value": {
11428
11790
  "@context": [
11791
+ "https://schema.org",
11429
11792
  "https://schema.twindev.org/ais/",
11430
11793
  "https://schema.twindev.org/common/"
11431
11794
  ],
@@ -11442,25 +11805,28 @@
11442
11805
  "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11443
11806
  "immutableInterval": 10,
11444
11807
  "numberOfItems": 1,
11445
- "entries": [
11446
- {
11447
- "@context": [
11448
- "https://schema.twindev.org/ais/",
11449
- "https://schema.twindev.org/common/"
11450
- ],
11451
- "type": "AuditableItemStreamEntry",
11452
- "id": "tst:1234567890",
11453
- "dateCreated": "2024-08-22T11:55:16.271Z",
11454
- "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11455
- "index": 0,
11456
- "entryObject": {
11457
- "@context": "https://schema.org",
11458
- "@type": "Event",
11459
- "startDate": "2011-04-09T20:00:00Z",
11460
- "description": "A description of the event"
11808
+ "entries": {
11809
+ "type": "ItemList",
11810
+ "itemListElement": [
11811
+ {
11812
+ "@context": [
11813
+ "https://schema.twindev.org/ais/",
11814
+ "https://schema.twindev.org/common/"
11815
+ ],
11816
+ "type": "AuditableItemStreamEntry",
11817
+ "id": "tst:1234567890",
11818
+ "dateCreated": "2024-08-22T11:55:16.271Z",
11819
+ "proofId": "0101010101010101010101010101010101010101010101010101010101010101",
11820
+ "index": 0,
11821
+ "entryObject": {
11822
+ "@context": "https://schema.org",
11823
+ "@type": "Event",
11824
+ "startDate": "2011-04-09T20:00:00Z",
11825
+ "description": "A description of the event"
11826
+ }
11461
11827
  }
11462
- }
11463
- ]
11828
+ ]
11829
+ }
11464
11830
  }
11465
11831
  }
11466
11832
  }
@@ -11590,6 +11956,12 @@
11590
11956
  "examples": {
11591
11957
  "auditableItemStreamUpdateRequestExample": {
11592
11958
  "value": {
11959
+ "@context": [
11960
+ "https://schema.org",
11961
+ "https://schema.twindev.org/ais/",
11962
+ "https://schema.twindev.org/common/"
11963
+ ],
11964
+ "type": "AuditableItemStream",
11593
11965
  "annotationObject": {
11594
11966
  "@context": "https://schema.org",
11595
11967
  "@type": "Note",
@@ -13926,8 +14298,15 @@
13926
14298
  }
13927
14299
  },
13928
14300
  "responses": {
13929
- "201": {
13930
- "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
+ }
13931
14310
  },
13932
14311
  "400": {
13933
14312
  "description": "The server cannot process the request, see the content for more details.",
@@ -14048,15 +14427,13 @@
14048
14427
  "dateModified": "2025-08-12T12:00:00Z",
14049
14428
  "generator": "did:iota:testnet:123456",
14050
14429
  "status": "pending",
14051
- "pendingTasks": [
14430
+ "tasks": [
14052
14431
  {
14053
14432
  "taskId": "urn:x-task-id:45678",
14054
- "dataspaceAppId": "https://my-app.example.org/app1"
14433
+ "dataspaceAppId": "https://my-app.example.org/app1",
14434
+ "status": "pending"
14055
14435
  }
14056
- ],
14057
- "runningTasks": [],
14058
- "finalizedTasks": [],
14059
- "inErrorTasks": []
14436
+ ]
14060
14437
  }
14061
14438
  }
14062
14439
  }
@@ -15029,6 +15406,24 @@
15029
15406
  }
15030
15407
  ]
15031
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
+ }
15032
15427
  }
15033
15428
  }
15034
15429
  }
@@ -15301,7 +15696,7 @@
15301
15696
  "content": {
15302
15697
  "application/json": {
15303
15698
  "schema": {
15304
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
15699
+ "$ref": "#/components/schemas/RightsManagementPolicy"
15305
15700
  },
15306
15701
  "examples": {
15307
15702
  "papUpdateRequestExample": {
@@ -15414,7 +15809,7 @@
15414
15809
  "content": {
15415
15810
  "application/json": {
15416
15811
  "schema": {
15417
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
15812
+ "$ref": "#/components/schemas/RightsManagementPolicy"
15418
15813
  },
15419
15814
  "examples": {
15420
15815
  "papGetResponseExample": {
@@ -15920,6 +16315,123 @@
15920
16315
  }
15921
16316
  }
15922
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
+ },
15923
16435
  "/rights-management/negotiations/{id}": {
15924
16436
  "get": {
15925
16437
  "operationId": "pnpGetNegotiation",
@@ -17378,23 +17890,6 @@
17378
17890
  },
17379
17891
  "components": {
17380
17892
  "schemas": {
17381
- "ActivityLogDates": {
17382
- "description": "Activity log dates.",
17383
- "type": "object",
17384
- "properties": {
17385
- "startDate": {
17386
- "type": "string",
17387
- "description": "Task processing start timestamp"
17388
- },
17389
- "endDate": {
17390
- "type": "string",
17391
- "description": "Task processing end timestamp"
17392
- }
17393
- },
17394
- "required": [
17395
- "startDate"
17396
- ]
17397
- },
17398
17893
  "ActivityLogDetails": {
17399
17894
  "description": "The details related to the processing of an Activity",
17400
17895
  "type": "object",
@@ -17418,10 +17913,6 @@
17418
17913
  "dateModified": {
17419
17914
  "type": "string",
17420
17915
  "description": "The last update date of this object."
17421
- },
17422
- "retryCount": {
17423
- "type": "number",
17424
- "description": "Number of times this activity has been retried."
17425
17916
  }
17426
17917
  },
17427
17918
  "required": [
@@ -17438,104 +17929,106 @@
17438
17929
  "status": {
17439
17930
  "$ref": "#/components/schemas/ActivityProcessingStatus"
17440
17931
  },
17441
- "pendingTasks": {
17442
- "type": "array",
17443
- "items": {
17444
- "$ref": "#/components/schemas/TaskApp"
17445
- },
17446
- "description": "The pending tasks that have to be run to process the Activity."
17447
- },
17448
- "runningTasks": {
17932
+ "tasks": {
17449
17933
  "type": "array",
17450
17934
  "items": {
17451
- "type": "object",
17452
- "allOf": [
17453
- {
17454
- "$ref": "#/components/schemas/TaskApp"
17455
- },
17456
- {
17457
- "$ref": "#/components/schemas/ActivityLogDates"
17458
- }
17459
- ]
17935
+ "$ref": "#/components/schemas/ActivityTaskEntry"
17460
17936
  },
17461
- "description": "The running tasks that are processing the Activity."
17937
+ "description": "The tasks that have to be run to process the Activity."
17938
+ }
17939
+ },
17940
+ "required": [
17941
+ "status"
17942
+ ],
17943
+ "allOf": [
17944
+ {
17945
+ "$ref": "#/components/schemas/ActivityLogDetails"
17946
+ }
17947
+ ]
17948
+ },
17949
+ "ActivityProcessingStatus": {
17950
+ "description": "The type exported.",
17951
+ "anyOf": [
17952
+ {
17953
+ "const": "pending",
17954
+ "description": "Pending: Activity Processing has not started yet."
17462
17955
  },
17463
- "finalizedTasks": {
17464
- "type": "array",
17465
- "items": {
17466
- "type": "object",
17467
- "properties": {
17468
- "result": {
17469
- "type": "string",
17470
- "description": "The task result."
17471
- }
17472
- },
17473
- "required": [
17474
- "result"
17475
- ],
17476
- "allOf": [
17477
- {
17478
- "$ref": "#/components/schemas/TaskApp"
17479
- },
17480
- {
17481
- "$ref": "#/components/schemas/ActivityLogDates"
17482
- }
17483
- ]
17484
- },
17485
- "description": "The tasks that have already finalized."
17956
+ {
17957
+ "const": "running",
17958
+ "description": "Running Activity processing is running."
17486
17959
  },
17487
- "inErrorTasks": {
17488
- "type": "array",
17489
- "items": {
17490
- "type": "object",
17491
- "properties": {
17492
- "error": {
17493
- "$ref": "#/components/schemas/Error"
17494
- }
17495
- },
17496
- "required": [
17497
- "error"
17498
- ],
17499
- "allOf": [
17500
- {
17501
- "$ref": "#/components/schemas/TaskApp"
17502
- }
17503
- ]
17504
- },
17505
- "description": "The tasks that are in error."
17960
+ {
17961
+ "const": "completed",
17962
+ "description": "Completed: Activity processing completed without error."
17963
+ },
17964
+ {
17965
+ "const": "error",
17966
+ "description": "Error: Activity processing cannot be performed and marked as in error. (Depends on application)."
17967
+ },
17968
+ {
17969
+ "const": "registering",
17970
+ "description": "Transient state. The background tasks associated with the activity are still being registered."
17971
+ }
17972
+ ]
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"
17506
18006
  }
17507
18007
  },
17508
18008
  "required": [
18009
+ "taskId",
18010
+ "dataspaceAppId",
17509
18011
  "status"
17510
- ],
17511
- "allOf": [
17512
- {
17513
- "$ref": "#/components/schemas/ActivityLogDetails"
17514
- }
17515
18012
  ]
17516
18013
  },
17517
- "ActivityProcessingStatus": {
17518
- "description": "The type exported.",
18014
+ "ActivityTaskStatus": {
18015
+ "description": "Activity task statuses.",
17519
18016
  "anyOf": [
17520
18017
  {
17521
18018
  "const": "pending",
17522
- "description": "Pending: Activity Processing has not started yet."
17523
- },
17524
- {
17525
- "const": "running",
17526
- "description": "Running Activity processing is running."
18019
+ "description": "Pending."
17527
18020
  },
17528
18021
  {
17529
- "const": "completed",
17530
- "description": "Completed: Activity processing completed without error."
18022
+ "const": "processing",
18023
+ "description": "Processing."
17531
18024
  },
17532
18025
  {
17533
- "const": "error",
17534
- "description": "Error: Activity processing cannot be performed and marked as in error. (Depends on application)."
18026
+ "const": "success",
18027
+ "description": "Success."
17535
18028
  },
17536
18029
  {
17537
- "const": "registering",
17538
- "description": "Transient state. The background tasks associated with the activity are still being registered."
18030
+ "const": "failed",
18031
+ "description": "Failed."
17539
18032
  }
17540
18033
  ]
17541
18034
  },
@@ -17678,154 +18171,227 @@
17678
18171
  ],
17679
18172
  "description": "The parameters to be used in the transfer."
17680
18173
  },
18174
+ "AuditCreateRequest": {
18175
+ "description": "The body of the request.",
18176
+ "type": "object",
18177
+ "properties": {
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": {
18190
+ "type": "string",
18191
+ "description": "The actor identifier, could be e-mail, username, or other unique identifier."
18192
+ },
18193
+ "nodeId": {
18194
+ "type": "string",
18195
+ "description": "The node identifier associated with the audit entry, if applicable."
18196
+ },
18197
+ "organizationId": {
18198
+ "type": "string",
18199
+ "description": "The organization identifier associated with the audit entry, if applicable."
18200
+ },
18201
+ "tenantId": {
18202
+ "type": "string",
18203
+ "description": "The tenant identifier associated with the audit entry, if applicable."
18204
+ },
18205
+ "ipAddressHashes": {
18206
+ "type": "array",
18207
+ "items": {
18208
+ "type": "string"
18209
+ },
18210
+ "description": "The hashed IP addresses of the client."
18211
+ },
18212
+ "userAgent": {
18213
+ "type": "string",
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
+ },
17681
18248
  "AuditableItemGraphCreateRequest": {
18249
+ "description": "The data to be used in the vertex.",
17682
18250
  "type": "object",
17683
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."
18287
+ },
17684
18288
  "annotationObject": {
17685
18289
  "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17686
18290
  },
17687
18291
  "aliases": {
17688
18292
  "type": "array",
17689
18293
  "items": {
17690
- "type": "object",
17691
- "properties": {
17692
- "id": {
17693
- "type": "string"
17694
- },
17695
- "aliasFormat": {
17696
- "type": "string"
17697
- },
17698
- "unique": {
17699
- "type": "boolean"
17700
- },
17701
- "annotationObject": {
17702
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17703
- }
17704
- },
17705
- "required": [
17706
- "id"
17707
- ]
18294
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphAlias"
17708
18295
  },
17709
18296
  "description": "Alternative aliases that can be used to identify the vertex."
17710
18297
  },
17711
18298
  "resources": {
17712
18299
  "type": "array",
17713
18300
  "items": {
17714
- "type": "object",
17715
- "properties": {
17716
- "id": {
17717
- "type": "string"
17718
- },
17719
- "resourceObject": {
17720
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17721
- }
17722
- }
18301
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphResource"
17723
18302
  },
17724
18303
  "description": "The resources attached to the vertex."
17725
18304
  },
17726
18305
  "edges": {
17727
18306
  "type": "array",
17728
18307
  "items": {
17729
- "type": "object",
17730
- "properties": {
17731
- "targetId": {
17732
- "type": "string"
17733
- },
17734
- "edgeRelationships": {
17735
- "type": "array",
17736
- "items": {
17737
- "type": "string"
17738
- }
17739
- },
17740
- "annotationObject": {
17741
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17742
- }
17743
- },
17744
- "required": [
17745
- "targetId",
17746
- "edgeRelationships"
17747
- ]
18308
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphEdge"
17748
18309
  },
17749
- "description": "The edges connected to the vertex."
18310
+ "description": "Edges connected to the vertex."
18311
+ },
18312
+ "verified": {
18313
+ "type": "boolean",
18314
+ "description": "Is the vertex verified, will only be populated when verification is requested."
17750
18315
  }
17751
18316
  },
17752
- "description": "The data to be used in the vertex."
18317
+ "required": [
18318
+ "@context",
18319
+ "type"
18320
+ ]
17753
18321
  },
17754
18322
  "AuditableItemGraphUpdateRequest": {
18323
+ "description": "The data to be used in the vertex.",
17755
18324
  "type": "object",
17756
18325
  "properties": {
18326
+ "dateCreated": {
18327
+ "type": "string",
18328
+ "description": "The date/time of when the element was created."
18329
+ },
18330
+ "dateModified": {
18331
+ "type": "string",
18332
+ "description": "The date/time of when the element was modified."
18333
+ },
18334
+ "dateDeleted": {
18335
+ "type": "string",
18336
+ "description": "The date/time of when the element was deleted, as we never actually remove items."
18337
+ },
18338
+ "@context": {
18339
+ "type": "array",
18340
+ "prefixItems": [
18341
+ {
18342
+ "const": "https://schema.twindev.org/aig/"
18343
+ },
18344
+ {
18345
+ "const": "https://schema.twindev.org/common/"
18346
+ }
18347
+ ],
18348
+ "items": {
18349
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
18350
+ },
18351
+ "minItems": 2,
18352
+ "description": "JSON-LD Context."
18353
+ },
18354
+ "type": {
18355
+ "const": "AuditableItemGraphVertex",
18356
+ "description": "JSON-LD Type."
18357
+ },
18358
+ "organizationIdentity": {
18359
+ "type": "string",
18360
+ "description": "The identity of the organization which controls the vertex."
18361
+ },
17757
18362
  "annotationObject": {
17758
18363
  "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17759
18364
  },
17760
18365
  "aliases": {
17761
18366
  "type": "array",
17762
18367
  "items": {
17763
- "type": "object",
17764
- "properties": {
17765
- "id": {
17766
- "type": "string"
17767
- },
17768
- "aliasFormat": {
17769
- "type": "string"
17770
- },
17771
- "unique": {
17772
- "type": "boolean"
17773
- },
17774
- "annotationObject": {
17775
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17776
- }
17777
- },
17778
- "required": [
17779
- "id"
17780
- ]
18368
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphAlias"
17781
18369
  },
17782
18370
  "description": "Alternative aliases that can be used to identify the vertex."
17783
18371
  },
17784
18372
  "resources": {
17785
18373
  "type": "array",
17786
18374
  "items": {
17787
- "type": "object",
17788
- "properties": {
17789
- "id": {
17790
- "type": "string"
17791
- },
17792
- "resourceObject": {
17793
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17794
- }
17795
- }
18375
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphResource"
17796
18376
  },
17797
18377
  "description": "The resources attached to the vertex."
17798
18378
  },
17799
18379
  "edges": {
17800
18380
  "type": "array",
17801
18381
  "items": {
17802
- "type": "object",
17803
- "properties": {
17804
- "id": {
17805
- "type": "string"
17806
- },
17807
- "targetId": {
17808
- "type": "string"
17809
- },
17810
- "edgeRelationships": {
17811
- "type": "array",
17812
- "items": {
17813
- "type": "string"
17814
- }
17815
- },
17816
- "annotationObject": {
17817
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17818
- }
17819
- },
17820
- "required": [
17821
- "targetId",
17822
- "edgeRelationships"
17823
- ]
18382
+ "$ref": "https://schema.twindev.org/aig/AuditableItemGraphEdge"
17824
18383
  },
17825
- "description": "The edges connected to the vertex."
18384
+ "description": "Edges connected to the vertex."
18385
+ },
18386
+ "verified": {
18387
+ "type": "boolean",
18388
+ "description": "Is the vertex verified, will only be populated when verification is requested."
17826
18389
  }
17827
18390
  },
17828
- "description": "The data to be used in the vertex."
18391
+ "required": [
18392
+ "@context",
18393
+ "type"
18394
+ ]
17829
18395
  },
17830
18396
  "AuditableItemStreamCreateEntryRequest": {
17831
18397
  "type": "object",
@@ -17839,34 +18405,6 @@
17839
18405
  ],
17840
18406
  "description": "The data to be used in the stream."
17841
18407
  },
17842
- "AuditableItemStreamCreateRequest": {
17843
- "type": "object",
17844
- "properties": {
17845
- "annotationObject": {
17846
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17847
- },
17848
- "entries": {
17849
- "type": "array",
17850
- "items": {
17851
- "type": "object",
17852
- "properties": {
17853
- "entryObject": {
17854
- "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17855
- }
17856
- },
17857
- "required": [
17858
- "entryObject"
17859
- ]
17860
- },
17861
- "description": "The entries for the stream."
17862
- },
17863
- "immutableInterval": {
17864
- "type": "number",
17865
- "description": "After how many entries do we add immutable checks, defaults to service configured value.\nA value of 0 will disable immutable checks, 1 will be every item, or any other integer for an interval."
17866
- }
17867
- },
17868
- "description": "The data to be used in the stream."
17869
- },
17870
18408
  "AuditableItemStreamUpdateEntryRequest": {
17871
18409
  "type": "object",
17872
18410
  "properties": {
@@ -17880,13 +18418,149 @@
17880
18418
  "description": "The data to be used in the entry."
17881
18419
  },
17882
18420
  "AuditableItemStreamUpdateRequest": {
18421
+ "description": "The data to be used in the stream, entries should be updated separately.",
17883
18422
  "type": "object",
17884
18423
  "properties": {
18424
+ "@context": {
18425
+ "type": "array",
18426
+ "prefixItems": [
18427
+ {
18428
+ "const": "https://schema.org"
18429
+ },
18430
+ {
18431
+ "const": "https://schema.twindev.org/ais/"
18432
+ },
18433
+ {
18434
+ "const": "https://schema.twindev.org/common/"
18435
+ }
18436
+ ],
18437
+ "items": {
18438
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
18439
+ },
18440
+ "minItems": 3,
18441
+ "description": "JSON-LD Context."
18442
+ },
18443
+ "type": {
18444
+ "const": "AuditableItemStream",
18445
+ "description": "JSON-LD Type."
18446
+ },
17885
18447
  "annotationObject": {
17886
18448
  "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
17887
18449
  }
17888
18450
  },
17889
- "description": "The data to be used in the stream."
18451
+ "required": [
18452
+ "@context",
18453
+ "type"
18454
+ ]
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
+ ]
17890
18564
  },
17891
18565
  "BlobStorageCreateRequest": {
17892
18566
  "type": "object",
@@ -18013,27 +18687,6 @@
18013
18687
  ],
18014
18688
  "description": "Transfer Process (DSP compliant) with state COMPLETED, or error."
18015
18689
  },
18016
- "ConflictResponse": {
18017
- "type": "object",
18018
- "properties": {
18019
- "conflicts": {
18020
- "type": "array",
18021
- "items": {
18022
- "type": "string"
18023
- },
18024
- "description": "The conflicting items."
18025
- }
18026
- },
18027
- "required": [
18028
- "conflicts"
18029
- ],
18030
- "allOf": [
18031
- {
18032
- "$ref": "#/components/schemas/Error"
18033
- }
18034
- ],
18035
- "description": "The body which contains the error."
18036
- },
18037
18690
  "DataAssetItemList": {
18038
18691
  "description": "Interface describing a list of entities that are within a Data Asset.\nPagination is handled via HTTP Link headers.",
18039
18692
  "type": "object",
@@ -18902,75 +19555,657 @@
18902
19555
  "type": "string",
18903
19556
  "description": "The tag data for the NFT."
18904
19557
  },
18905
- "immutableMetadata": {
18906
- "description": "The immutable data for the NFT."
19558
+ "immutableMetadata": {
19559
+ "description": "The immutable data for the NFT."
19560
+ },
19561
+ "metadata": {
19562
+ "description": "The metadata for the NFT."
19563
+ }
19564
+ },
19565
+ "required": [
19566
+ "issuer",
19567
+ "owner",
19568
+ "tag"
19569
+ ],
19570
+ "description": "The data that was resolved."
19571
+ },
19572
+ "NftTransferRequest": {
19573
+ "type": "object",
19574
+ "properties": {
19575
+ "recipientIdentity": {
19576
+ "type": "string",
19577
+ "description": "The recipient identity for the NFT."
19578
+ },
19579
+ "recipientAddress": {
19580
+ "type": "string",
19581
+ "description": "The recipient address for the NFT."
19582
+ },
19583
+ "metadata": {
19584
+ "description": "The metadata for the NFT."
19585
+ }
19586
+ },
19587
+ "required": [
19588
+ "recipientIdentity",
19589
+ "recipientAddress"
19590
+ ],
19591
+ "description": "The data to be used in the transfer."
19592
+ },
19593
+ "NftUpdateRequest": {
19594
+ "type": "object",
19595
+ "properties": {
19596
+ "metadata": {
19597
+ "description": "The metadata for the NFT."
19598
+ }
19599
+ },
19600
+ "description": "The data to be used in the update."
19601
+ },
19602
+ "NotFoundResponse": {
19603
+ "type": "object",
19604
+ "properties": {
19605
+ "notFoundId": {
19606
+ "type": "string",
19607
+ "description": "The id if the item that was not found."
19608
+ }
19609
+ },
19610
+ "allOf": [
19611
+ {
19612
+ "$ref": "#/components/schemas/Error"
19613
+ }
19614
+ ],
19615
+ "description": "The body which contains the error."
19616
+ },
19617
+ "PapCreateRequest": {
19618
+ "description": "The body of the request - the policy to create (id will be auto-generated if not provided).",
19619
+ "type": "object",
19620
+ "properties": {
19621
+ "@context": {
19622
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
19623
+ },
19624
+ "profile": {
19625
+ "anyOf": [
19626
+ {
19627
+ "type": "string"
19628
+ },
19629
+ {
19630
+ "type": "array",
19631
+ "items": {
19632
+ "type": "string"
19633
+ }
19634
+ }
19635
+ ],
19636
+ "description": "The profile(s) this policy conforms to.\nIRIs identifying the ODRL Profile(s)."
19637
+ },
19638
+ "assigner": {
19639
+ "anyOf": [
19640
+ {
19641
+ "type": "string"
19642
+ },
19643
+ {
19644
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
19645
+ },
19646
+ {
19647
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
19648
+ },
19649
+ {
19650
+ "type": "array",
19651
+ "items": {
19652
+ "anyOf": [
19653
+ {
19654
+ "type": "string"
19655
+ },
19656
+ {
19657
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
19658
+ },
19659
+ {
19660
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
19661
+ }
19662
+ ]
19663
+ }
19664
+ }
19665
+ ],
19666
+ "description": "The assigner of the policy.\nApplies to all rules unless overridden at rule level."
19667
+ },
19668
+ "assignee": {
19669
+ "anyOf": [
19670
+ {
19671
+ "type": "string"
19672
+ },
19673
+ {
19674
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
19675
+ },
19676
+ {
19677
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
19678
+ },
19679
+ {
19680
+ "type": "array",
19681
+ "items": {
19682
+ "anyOf": [
19683
+ {
19684
+ "type": "string"
19685
+ },
19686
+ {
19687
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
19688
+ },
19689
+ {
19690
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
19691
+ }
19692
+ ]
19693
+ }
19694
+ }
19695
+ ],
19696
+ "description": "The assignee of the policy.\nApplies to all rules unless overridden at rule level."
19697
+ },
19698
+ "target": {
19699
+ "anyOf": [
19700
+ {
19701
+ "type": "string"
19702
+ },
19703
+ {
19704
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
19705
+ },
19706
+ {
19707
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
19708
+ },
19709
+ {
19710
+ "type": "array",
19711
+ "items": {
19712
+ "anyOf": [
19713
+ {
19714
+ "type": "string"
19715
+ },
19716
+ {
19717
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
19718
+ },
19719
+ {
19720
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
19721
+ }
19722
+ ]
19723
+ }
19724
+ }
19725
+ ],
19726
+ "description": "The target asset for the rule."
19727
+ },
19728
+ "action": {
19729
+ "anyOf": [
19730
+ {
19731
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
19732
+ },
19733
+ {
19734
+ "type": "string"
19735
+ },
19736
+ {
19737
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
19738
+ },
19739
+ {
19740
+ "type": "array",
19741
+ "items": {
19742
+ "anyOf": [
19743
+ {
19744
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
19745
+ },
19746
+ {
19747
+ "type": "string"
19748
+ },
19749
+ {
19750
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
19751
+ }
19752
+ ]
19753
+ }
19754
+ }
19755
+ ],
19756
+ "description": "The action associated with the rule."
19757
+ },
19758
+ "inheritFrom": {
19759
+ "anyOf": [
19760
+ {
19761
+ "type": "string"
19762
+ },
19763
+ {
19764
+ "type": "array",
19765
+ "items": {
19766
+ "type": "string"
19767
+ }
19768
+ }
19769
+ ],
19770
+ "description": "The parent policy(ies) this policy inherits from.\nIRIs identifying the parent Policy(ies)."
19771
+ },
19772
+ "conflict": {
19773
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlConflictStrategyType"
19774
+ },
19775
+ "permission": {
19776
+ "anyOf": [
19777
+ {
19778
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
19779
+ },
19780
+ {
19781
+ "type": "array",
19782
+ "items": {
19783
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
19784
+ }
19785
+ }
19786
+ ],
19787
+ "description": "The permissions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
19788
+ },
19789
+ "prohibition": {
19790
+ "anyOf": [
19791
+ {
19792
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
19793
+ },
19794
+ {
19795
+ "type": "array",
19796
+ "items": {
19797
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
19798
+ }
19799
+ }
19800
+ ],
19801
+ "description": "The prohibitions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
19802
+ },
19803
+ "obligation": {
19804
+ "anyOf": [
19805
+ {
19806
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
19807
+ },
19808
+ {
19809
+ "type": "array",
19810
+ "items": {
19811
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
19812
+ }
19813
+ }
19814
+ ],
19815
+ "description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
19816
+ },
19817
+ "@type": {
19818
+ "$ref": "#/components/schemas/RightsManagementPolicyType"
19819
+ },
19820
+ "@id": {
19821
+ "type": "string",
19822
+ "description": "Unique identifier for the policy."
19823
+ }
19824
+ },
19825
+ "required": [
19826
+ "@context",
19827
+ "@type"
19828
+ ]
19829
+ },
19830
+ "PapQueryResponse": {
19831
+ "type": "array",
19832
+ "items": {
19833
+ "$ref": "#/components/schemas/RightsManagementPolicy"
19834
+ },
19835
+ "description": "The body of the response."
19836
+ },
19837
+ "PnapQueryResponse": {
19838
+ "type": "array",
19839
+ "items": {
19840
+ "$ref": "#/components/schemas/PolicyNegotiation"
19841
+ },
19842
+ "description": "The body of the response."
19843
+ },
19844
+ "PnpContractNegotiationResponse": {
19845
+ "oneOf": [
19846
+ {
19847
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiation"
19848
+ },
19849
+ {
19850
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiationError"
19851
+ }
19852
+ ],
19853
+ "description": "The state of the policy or an error."
19854
+ },
19855
+ "PolicyNegotiation": {
19856
+ "description": "Interface describing a rights management policy negotiation.",
19857
+ "type": "object",
19858
+ "properties": {
19859
+ "id": {
19860
+ "type": "string",
19861
+ "description": "The primary id used by the provider."
19862
+ },
19863
+ "correlationId": {
19864
+ "type": "string",
19865
+ "description": "This is used by the other side of the negotiation."
19866
+ },
19867
+ "policyId": {
19868
+ "type": "string",
19869
+ "description": "The unique identifier for the policy."
19870
+ },
19871
+ "dateCreated": {
19872
+ "type": "string",
19873
+ "description": "The date and time when the negotiation was created."
19874
+ },
19875
+ "expires": {
19876
+ "type": "number",
19877
+ "description": "The expiration time for the policy negotiation if it's a manual process."
19878
+ },
19879
+ "state": {
19880
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiationStateType"
19881
+ },
19882
+ "callbackAddress": {
19883
+ "type": "string",
19884
+ "description": "The callback address to send updates to the requester."
19885
+ },
19886
+ "publicOrigin": {
19887
+ "type": "string",
19888
+ "description": "The public origin of the server that initiated or received this negotiation.\nUsed to construct callback URLs in subsequent async messages."
19889
+ },
19890
+ "organizationIdentity": {
19891
+ "type": "string",
19892
+ "description": "Organization identity to be used when sending trust payloads."
19893
+ },
19894
+ "offer": {
19895
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolOffer"
19896
+ },
19897
+ "agreement": {
19898
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolAgreement"
19899
+ },
19900
+ "trustVerificationInfo": {
19901
+ "$ref": "#/components/schemas/TrustVerificationInfo"
19902
+ },
19903
+ "code": {
19904
+ "type": "string",
19905
+ "description": "A reason code for when the negotiation errors."
19906
+ },
19907
+ "reason": {
19908
+ "type": "array",
19909
+ "items": {
19910
+ "type": "object",
19911
+ "properties": {
19912
+ "@value": {
19913
+ "type": "string"
19914
+ },
19915
+ "@language": {
19916
+ "type": "string"
19917
+ }
19918
+ },
19919
+ "required": [
19920
+ "@value"
19921
+ ]
19922
+ },
19923
+ "description": "A more detailed reason for the negotiation error."
19924
+ },
19925
+ "description": {
19926
+ "type": "array",
19927
+ "items": {
19928
+ "type": "object",
19929
+ "properties": {
19930
+ "@value": {
19931
+ "type": "string"
19932
+ },
19933
+ "@language": {
19934
+ "type": "string"
19935
+ }
19936
+ },
19937
+ "required": [
19938
+ "@value"
19939
+ ]
19940
+ },
19941
+ "description": "A more detailed reason for the negotiation error."
19942
+ },
19943
+ "errorDetails": {
19944
+ "$ref": "#/components/schemas/Error"
19945
+ },
19946
+ "handlerId": {
19947
+ "type": "string",
19948
+ "description": "The id of the handler, on provider side this is the negotiator, on consumer side this is the requester."
19949
+ },
19950
+ "interventionRequired": {
19951
+ "type": "boolean",
19952
+ "description": "Is manual intervention required to complete the negotiation?"
19953
+ }
19954
+ },
19955
+ "required": [
19956
+ "id",
19957
+ "correlationId",
19958
+ "dateCreated",
19959
+ "state",
19960
+ "organizationIdentity"
19961
+ ]
19962
+ },
19963
+ "RefreshTokenResponse": {
19964
+ "type": "object",
19965
+ "properties": {
19966
+ "expiry": {
19967
+ "type": "number",
19968
+ "description": "The expiry time of the token."
19969
+ }
19970
+ },
19971
+ "required": [
19972
+ "expiry"
19973
+ ],
19974
+ "description": "The refresh token details."
19975
+ },
19976
+ "RequestTransferResponse": {
19977
+ "oneOf": [
19978
+ {
19979
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolTransferProcess"
19980
+ },
19981
+ {
19982
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolTransferError"
19983
+ }
19984
+ ],
19985
+ "description": "Transfer Process (DSP compliant) with state REQUESTED, or error."
19986
+ },
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.",
19989
+ "type": "object",
19990
+ "properties": {
19991
+ "@context": {
19992
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
19993
+ },
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)."
20007
+ },
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."
20037
+ },
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."
20067
+ },
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."
18907
20172
  },
18908
- "metadata": {
18909
- "description": "The metadata for the NFT."
18910
- }
18911
- },
18912
- "required": [
18913
- "issuer",
18914
- "owner",
18915
- "tag"
18916
- ],
18917
- "description": "The data that was resolved."
18918
- },
18919
- "NftTransferRequest": {
18920
- "type": "object",
18921
- "properties": {
18922
- "recipientIdentity": {
18923
- "type": "string",
18924
- "description": "The recipient identity for the NFT."
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."
18925
20186
  },
18926
- "recipientAddress": {
20187
+ "@id": {
18927
20188
  "type": "string",
18928
- "description": "The recipient address for the NFT."
20189
+ "description": "Unique identifier for the policy."
18929
20190
  },
18930
- "metadata": {
18931
- "description": "The metadata for the NFT."
20191
+ "@type": {
20192
+ "const": "EcosystemPolicy",
20193
+ "description": "The type must be \"EcosystemPolicy\"."
18932
20194
  }
18933
20195
  },
18934
20196
  "required": [
18935
- "recipientIdentity",
18936
- "recipientAddress"
18937
- ],
18938
- "description": "The data to be used in the transfer."
18939
- },
18940
- "NftUpdateRequest": {
18941
- "type": "object",
18942
- "properties": {
18943
- "metadata": {
18944
- "description": "The metadata for the NFT."
18945
- }
18946
- },
18947
- "description": "The data to be used in the update."
18948
- },
18949
- "NotFoundResponse": {
18950
- "type": "object",
18951
- "properties": {
18952
- "notFoundId": {
18953
- "type": "string",
18954
- "description": "The id if the item that was not found."
18955
- }
18956
- },
18957
- "allOf": [
18958
- {
18959
- "$ref": "#/components/schemas/Error"
18960
- }
18961
- ],
18962
- "description": "The body which contains the error."
20197
+ "@context",
20198
+ "@id",
20199
+ "@type"
20200
+ ]
18963
20201
  },
18964
- "PapCreateRequest": {
18965
- "description": "The body of the request - the policy to create (id will be auto-generated if not provided).",
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.",
18966
20204
  "type": "object",
18967
20205
  "properties": {
18968
20206
  "@context": {
18969
20207
  "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
18970
20208
  },
18971
- "@type": {
18972
- "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPolicyType"
18973
- },
18974
20209
  "profile": {
18975
20210
  "anyOf": [
18976
20211
  {
@@ -19167,169 +20402,37 @@
19167
20402
  "@id": {
19168
20403
  "type": "string",
19169
20404
  "description": "Unique identifier for the policy."
20405
+ },
20406
+ "@type": {
20407
+ "$ref": "#/components/schemas/RightsManagementPolicyType"
19170
20408
  }
19171
20409
  },
19172
20410
  "required": [
19173
20411
  "@context",
20412
+ "@id",
19174
20413
  "@type"
19175
20414
  ]
19176
20415
  },
19177
- "PapQueryResponse": {
19178
- "type": "array",
19179
- "items": {
19180
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
19181
- },
19182
- "description": "The body of the response."
19183
- },
19184
- "PnapQueryResponse": {
19185
- "type": "array",
19186
- "items": {
19187
- "$ref": "#/components/schemas/PolicyNegotiation"
19188
- },
19189
- "description": "The body of the response."
19190
- },
19191
- "PnpContractNegotiationResponse": {
19192
- "oneOf": [
20416
+ "RightsManagementPolicyType": {
20417
+ "description": "TWIN rights-management policy types.",
20418
+ "anyOf": [
19193
20419
  {
19194
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiation"
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."
19195
20422
  },
19196
20423
  {
19197
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiationError"
19198
- }
19199
- ],
19200
- "description": "The state of the policy or an error."
19201
- },
19202
- "PolicyNegotiation": {
19203
- "description": "Interface describing a rights management policy negotiation.",
19204
- "type": "object",
19205
- "properties": {
19206
- "id": {
19207
- "type": "string",
19208
- "description": "The primary id used by the provider."
19209
- },
19210
- "correlationId": {
19211
- "type": "string",
19212
- "description": "This is used by the other side of the negotiation."
19213
- },
19214
- "policyId": {
19215
- "type": "string",
19216
- "description": "The unique identifier for the policy."
20424
+ "const": "Policy"
19217
20425
  },
19218
- "dateCreated": {
19219
- "type": "string",
19220
- "description": "The date and time when the negotiation was created."
19221
- },
19222
- "expires": {
19223
- "type": "number",
19224
- "description": "The expiration time for the policy negotiation if it's a manual process."
19225
- },
19226
- "state": {
19227
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolContractNegotiationStateType"
19228
- },
19229
- "callbackAddress": {
19230
- "type": "string",
19231
- "description": "The callback address to send updates to the requester."
19232
- },
19233
- "publicOrigin": {
19234
- "type": "string",
19235
- "description": "The public origin of the server that initiated or received this negotiation.\nUsed to construct callback URLs in subsequent async messages."
19236
- },
19237
- "organizationIdentity": {
19238
- "type": "string",
19239
- "description": "Organization identity to be used when sending trust payloads."
19240
- },
19241
- "offer": {
19242
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolOffer"
19243
- },
19244
- "agreement": {
19245
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolAgreement"
19246
- },
19247
- "trustVerificationInfo": {
19248
- "$ref": "#/components/schemas/TrustVerificationInfo"
19249
- },
19250
- "code": {
19251
- "type": "string",
19252
- "description": "A reason code for when the negotiation errors."
19253
- },
19254
- "reason": {
19255
- "type": "array",
19256
- "items": {
19257
- "type": "object",
19258
- "properties": {
19259
- "@value": {
19260
- "type": "string"
19261
- },
19262
- "@language": {
19263
- "type": "string"
19264
- }
19265
- },
19266
- "required": [
19267
- "@value"
19268
- ]
19269
- },
19270
- "description": "A more detailed reason for the negotiation error."
19271
- },
19272
- "description": {
19273
- "type": "array",
19274
- "items": {
19275
- "type": "object",
19276
- "properties": {
19277
- "@value": {
19278
- "type": "string"
19279
- },
19280
- "@language": {
19281
- "type": "string"
19282
- }
19283
- },
19284
- "required": [
19285
- "@value"
19286
- ]
19287
- },
19288
- "description": "A more detailed reason for the negotiation error."
19289
- },
19290
- "errorDetails": {
19291
- "$ref": "#/components/schemas/Error"
19292
- },
19293
- "handlerId": {
19294
- "type": "string",
19295
- "description": "The id of the handler, on provider side this is the negotiator, on consumer side this is the requester."
20426
+ {
20427
+ "const": "Set"
19296
20428
  },
19297
- "interventionRequired": {
19298
- "type": "boolean",
19299
- "description": "Is manual intervention required to complete the negotiation?"
19300
- }
19301
- },
19302
- "required": [
19303
- "id",
19304
- "correlationId",
19305
- "dateCreated",
19306
- "state",
19307
- "organizationIdentity"
19308
- ]
19309
- },
19310
- "RefreshTokenResponse": {
19311
- "type": "object",
19312
- "properties": {
19313
- "expiry": {
19314
- "type": "number",
19315
- "description": "The expiry time of the token."
19316
- }
19317
- },
19318
- "required": [
19319
- "expiry"
19320
- ],
19321
- "description": "The refresh token details."
19322
- },
19323
- "RequestTransferResponse": {
19324
- "oneOf": [
19325
20429
  {
19326
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolTransferProcess"
20430
+ "const": "Offer"
19327
20431
  },
19328
20432
  {
19329
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolTransferError"
20433
+ "const": "Agreement"
19330
20434
  }
19331
- ],
19332
- "description": "Transfer Process (DSP compliant) with state REQUESTED, or error."
20435
+ ]
19333
20436
  },
19334
20437
  "Rule": {
19335
20438
  "description": "Rule defining how to extract data from an object.",
@@ -19570,24 +20673,6 @@
19570
20673
  "dateModified"
19571
20674
  ]
19572
20675
  },
19573
- "TaskApp": {
19574
- "description": "Denotes a task associated with a Dataspace App",
19575
- "type": "object",
19576
- "properties": {
19577
- "taskId": {
19578
- "type": "string",
19579
- "description": "Task Id."
19580
- },
19581
- "dataspaceAppId": {
19582
- "type": "string",
19583
- "description": "Dataspace App Id."
19584
- }
19585
- },
19586
- "required": [
19587
- "taskId",
19588
- "dataspaceAppId"
19589
- ]
19590
- },
19591
20676
  "TelemetryAddMetricValueRequest": {
19592
20677
  "type": "object",
19593
20678
  "properties": {