@twin.org/node 0.0.3-next.34 → 0.0.3-next.35

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.
@@ -111,6 +111,10 @@
111
111
  "name": "Transfer Process",
112
112
  "description": "DSP Transfer Process Protocol endpoints for initiating and managing data transfers."
113
113
  },
114
+ {
115
+ "name": "Datasets",
116
+ "description": "Tenant-scoped CRUD over the datasets the Control Plane reads at start time to populate the federated catalogue."
117
+ },
114
118
  {
115
119
  "name": "Policy Administration Point",
116
120
  "description": "Endpoints for managing ODRL policies in the Policy Administration Point"
@@ -147,11 +151,11 @@
147
151
  "status": "ok",
148
152
  "components": [
149
153
  {
150
- "name": "Database",
154
+ "source": "Database",
151
155
  "status": "ok"
152
156
  },
153
157
  {
154
- "name": "Storage",
158
+ "source": "Storage",
155
159
  "status": "ok"
156
160
  }
157
161
  ]
@@ -163,12 +167,12 @@
163
167
  "status": "warning",
164
168
  "components": [
165
169
  {
166
- "name": "Database",
170
+ "source": "Database",
167
171
  "status": "warning",
168
172
  "description": "slowRunning"
169
173
  },
170
174
  {
171
- "name": "Storage",
175
+ "source": "Storage",
172
176
  "status": "ok"
173
177
  }
174
178
  ]
@@ -180,11 +184,11 @@
180
184
  "status": "error",
181
185
  "components": [
182
186
  {
183
- "name": "Database",
187
+ "source": "Database",
184
188
  "status": "ok"
185
189
  },
186
190
  {
187
- "name": "Storage",
191
+ "source": "Storage",
188
192
  "status": "error",
189
193
  "description": "storageFull"
190
194
  }
@@ -4939,6 +4943,91 @@
4939
4943
  }
4940
4944
  }
4941
4945
  },
4946
+ "delete": {
4947
+ "operationId": "blobStorageEmpty",
4948
+ "summary": "Remove all entries from blob storage",
4949
+ "tags": [
4950
+ "Blob Storage"
4951
+ ],
4952
+ "security": [
4953
+ {
4954
+ "jwtBearerAuthScheme": []
4955
+ }
4956
+ ],
4957
+ "requestBody": {
4958
+ "description": "Request to remove all entries from blob storage.",
4959
+ "required": true,
4960
+ "content": {
4961
+ "text/plain": {
4962
+ "schema": {
4963
+ "$ref": "https://schema.twindev.org/blob-storage/BlobStorageEmptyRequest"
4964
+ }
4965
+ }
4966
+ }
4967
+ },
4968
+ "responses": {
4969
+ "204": {
4970
+ "description": "The rest request ended in success with no data."
4971
+ },
4972
+ "400": {
4973
+ "description": "The server cannot process the request, see the content for more details.",
4974
+ "content": {
4975
+ "application/json": {
4976
+ "schema": {
4977
+ "$ref": "#/components/schemas/Error"
4978
+ },
4979
+ "examples": {
4980
+ "exampleResponse": {
4981
+ "value": {
4982
+ "name": "GeneralError",
4983
+ "message": "errorMessage",
4984
+ "properties": {
4985
+ "foo": "bar"
4986
+ }
4987
+ }
4988
+ }
4989
+ }
4990
+ }
4991
+ }
4992
+ },
4993
+ "401": {
4994
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
4995
+ "content": {
4996
+ "application/json": {
4997
+ "schema": {
4998
+ "$ref": "#/components/schemas/Error"
4999
+ },
5000
+ "examples": {
5001
+ "exampleResponse": {
5002
+ "value": {
5003
+ "name": "UnauthorizedError",
5004
+ "message": "errorMessage"
5005
+ }
5006
+ }
5007
+ }
5008
+ }
5009
+ }
5010
+ },
5011
+ "500": {
5012
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
5013
+ "content": {
5014
+ "application/json": {
5015
+ "schema": {
5016
+ "$ref": "#/components/schemas/Error"
5017
+ },
5018
+ "examples": {
5019
+ "exampleResponse": {
5020
+ "value": {
5021
+ "name": "InternalServerError",
5022
+ "message": "errorMessage"
5023
+ }
5024
+ }
5025
+ }
5026
+ }
5027
+ }
5028
+ }
5029
+ }
5030
+ },
4942
5031
  "get": {
4943
5032
  "operationId": "blobStorageQuery",
4944
5033
  "summary": "Query the items from blob storage",
@@ -16916,12 +17005,12 @@
16916
17005
  }
16917
17006
  }
16918
17007
  },
16919
- "/rights-management/policy/admin": {
17008
+ "/dataspace-control-plane/app-datasets": {
16920
17009
  "post": {
16921
- "operationId": "papCreate",
16922
- "summary": "Create a policy",
17010
+ "operationId": "datasetCreate",
17011
+ "summary": "Register an app dataset for the calling tenant.",
16923
17012
  "tags": [
16924
- "Policy Administration Point"
17013
+ "Datasets"
16925
17014
  ],
16926
17015
  "security": [
16927
17016
  {
@@ -16929,24 +17018,24 @@
16929
17018
  }
16930
17019
  ],
16931
17020
  "requestBody": {
16932
- "description": "The request structure for creating a policy.",
17021
+ "description": "API request to register an app dataset.\n\nThe owning `tenantId` is captured automatically from the request's tenant\ncontext — callers do not supply it.",
16933
17022
  "required": true,
16934
17023
  "content": {
16935
17024
  "application/json": {
16936
17025
  "schema": {
16937
- "$ref": "#/components/schemas/PapCreateRequest"
17026
+ "$ref": "#/components/schemas/AppDatasetCreateRequest"
16938
17027
  },
16939
17028
  "examples": {
16940
- "papCreateRequestExample": {
17029
+ "datasetCreateRequestExample": {
16941
17030
  "value": {
16942
- "@context": "http://www.w3.org/ns/odrl.jsonld",
16943
- "@type": "Set",
16944
- "permission": [
16945
- {
16946
- "target": "http://example.com/asset/1",
16947
- "action": "use"
16948
- }
16949
- ]
17031
+ "appId": "https://twin.example.org/app1",
17032
+ "dataset": {
17033
+ "@context": "https://w3id.org/dspace/2025/1/context.jsonld",
17034
+ "@type": "Dataset",
17035
+ "@id": "https://twin.example.org/data-service-1",
17036
+ "hasPolicy": [],
17037
+ "distribution": []
17038
+ }
16950
17039
  }
16951
17040
  }
16952
17041
  }
@@ -16954,14 +17043,21 @@
16954
17043
  }
16955
17044
  },
16956
17045
  "responses": {
16957
- "201": {
16958
- "description": "The rest request ended in created response.",
17046
+ "200": {
17047
+ "description": "API response from registering an app dataset.",
17048
+ "content": {
17049
+ "text/plain": {
17050
+ "schema": {
17051
+ "$ref": "#/components/schemas/AppDatasetCreateResponse"
17052
+ }
17053
+ }
17054
+ },
16959
17055
  "headers": {
16960
17056
  "location": {
16961
17057
  "schema": {
16962
17058
  "type": "string"
16963
17059
  },
16964
- "description": "e.g. urn:rights-management:abc123def456"
17060
+ "description": "e.g. https://twin.example.org/data-service-1"
16965
17061
  }
16966
17062
  }
16967
17063
  },
@@ -17025,51 +17121,15 @@
17025
17121
  }
17026
17122
  },
17027
17123
  "get": {
17028
- "operationId": "papQuery",
17029
- "summary": "Query policies",
17124
+ "operationId": "datasetList",
17125
+ "summary": "List the app datasets owned by the calling tenant.",
17030
17126
  "tags": [
17031
- "Policy Administration Point"
17127
+ "Datasets"
17032
17128
  ],
17033
17129
  "parameters": [
17034
17130
  {
17035
- "name": "assigner",
17036
- "description": "The assigner to filter by.",
17037
- "in": "query",
17038
- "required": false,
17039
- "schema": {
17040
- "type": "string"
17041
- }
17042
- },
17043
- {
17044
- "name": "assignee",
17045
- "description": "The assignee to filter by.",
17046
- "in": "query",
17047
- "required": false,
17048
- "schema": {
17049
- "type": "string"
17050
- }
17051
- },
17052
- {
17053
- "name": "action",
17054
- "description": "The action to filter by.",
17055
- "in": "query",
17056
- "required": false,
17057
- "schema": {
17058
- "type": "string"
17059
- }
17060
- },
17061
- {
17062
- "name": "target",
17063
- "description": "The target to filter by.",
17064
- "in": "query",
17065
- "required": false,
17066
- "schema": {
17067
- "type": "string"
17068
- }
17069
- },
17070
- {
17071
- "name": "conditions",
17072
- "description": "The condition for the query.",
17131
+ "name": "cursor",
17132
+ "description": "Cursor returned from a previous list call to fetch the next page.",
17073
17133
  "in": "query",
17074
17134
  "required": false,
17075
17135
  "schema": {
@@ -17078,22 +17138,12 @@
17078
17138
  },
17079
17139
  {
17080
17140
  "name": "limit",
17081
- "description": "Limit the number of entities to return.",
17141
+ "description": "Maximum number of entries to return (string-encoded; parsed on the server).",
17082
17142
  "in": "query",
17083
17143
  "required": false,
17084
17144
  "schema": {
17085
17145
  "type": "string"
17086
17146
  }
17087
- },
17088
- {
17089
- "name": "cursor",
17090
- "description": "The cursor to get next chunk of data, returned in previous response.",
17091
- "in": "query",
17092
- "required": false,
17093
- "schema": {
17094
- "type": "string"
17095
- },
17096
- "example": "optional-pagination-cursor"
17097
17147
  }
17098
17148
  ],
17099
17149
  "security": [
@@ -17103,28 +17153,11 @@
17103
17153
  ],
17104
17154
  "responses": {
17105
17155
  "200": {
17106
- "description": "The response structure for querying policies.",
17156
+ "description": "API response listing the app datasets owned by the calling tenant.",
17107
17157
  "content": {
17108
17158
  "application/json": {
17109
17159
  "schema": {
17110
- "$ref": "#/components/schemas/PapQueryResponse"
17111
- },
17112
- "examples": {
17113
- "papQueryResponseExample": {
17114
- "value": [
17115
- {
17116
- "@context": "http://www.w3.org/ns/odrl.jsonld",
17117
- "@type": "Set",
17118
- "@id": "urn:rights-management:abc123def456",
17119
- "permission": [
17120
- {
17121
- "target": "http://example.com/asset/1",
17122
- "action": "use"
17123
- }
17124
- ]
17125
- }
17126
- ]
17127
- }
17160
+ "$ref": "#/components/schemas/AppDatasetListResponse"
17128
17161
  }
17129
17162
  }
17130
17163
  }
@@ -17189,24 +17222,24 @@
17189
17222
  }
17190
17223
  }
17191
17224
  },
17192
- "/rights-management/policy/admin/{id}": {
17193
- "put": {
17194
- "operationId": "papUpdate",
17195
- "summary": "Update a policy",
17225
+ "/dataspace-control-plane/app-datasets/{id}": {
17226
+ "get": {
17227
+ "operationId": "datasetGet",
17228
+ "summary": "Retrieve an app dataset owned by the calling tenant.",
17196
17229
  "tags": [
17197
- "Policy Administration Point"
17230
+ "Datasets"
17198
17231
  ],
17199
17232
  "parameters": [
17200
17233
  {
17201
17234
  "name": "id",
17202
- "description": "The ID of the policy to update.",
17235
+ "description": "The stored app dataset id (entity primary key).",
17203
17236
  "in": "path",
17204
17237
  "required": true,
17205
17238
  "schema": {
17206
17239
  "type": "string"
17207
17240
  },
17208
17241
  "style": "simple",
17209
- "example": "urn:rights-management:abc123def456"
17242
+ "example": "dataspace-app-dataset-1"
17210
17243
  }
17211
17244
  ],
17212
17245
  "security": [
@@ -17214,35 +17247,16 @@
17214
17247
  "jwtBearerAuthScheme": []
17215
17248
  }
17216
17249
  ],
17217
- "requestBody": {
17218
- "description": "The request structure for updating a policy.",
17219
- "required": true,
17220
- "content": {
17221
- "application/json": {
17222
- "schema": {
17223
- "$ref": "#/components/schemas/RightsManagementPolicy"
17224
- },
17225
- "examples": {
17226
- "papUpdateRequestExample": {
17227
- "value": {
17228
- "@context": "http://www.w3.org/ns/odrl.jsonld",
17229
- "@type": "Set",
17230
- "@id": "urn:rights-management:abc123def456",
17231
- "permission": [
17232
- {
17233
- "target": "http://example.com/asset/2",
17234
- "action": "read"
17235
- }
17236
- ]
17237
- }
17250
+ "responses": {
17251
+ "200": {
17252
+ "description": "API response for a single stored app dataset record.",
17253
+ "content": {
17254
+ "application/json": {
17255
+ "schema": {
17256
+ "$ref": "#/components/schemas/DataspaceAppDataset"
17238
17257
  }
17239
17258
  }
17240
17259
  }
17241
- }
17242
- },
17243
- "responses": {
17244
- "204": {
17245
- "description": "The rest request ended in success with no data."
17246
17260
  },
17247
17261
  "400": {
17248
17262
  "description": "The server cannot process the request, see the content for more details.",
@@ -17303,23 +17317,23 @@
17303
17317
  }
17304
17318
  }
17305
17319
  },
17306
- "get": {
17307
- "operationId": "papGet",
17308
- "summary": "Get a policy",
17320
+ "put": {
17321
+ "operationId": "datasetUpdate",
17322
+ "summary": "Update an app dataset owned by the calling tenant.",
17309
17323
  "tags": [
17310
- "Policy Administration Point"
17324
+ "Datasets"
17311
17325
  ],
17312
17326
  "parameters": [
17313
17327
  {
17314
17328
  "name": "id",
17315
- "description": "The ID of the policy to get.",
17329
+ "description": "The stored app dataset id.",
17316
17330
  "in": "path",
17317
17331
  "required": true,
17318
17332
  "schema": {
17319
17333
  "type": "string"
17320
17334
  },
17321
17335
  "style": "simple",
17322
- "example": "urn:rights-management:abc123def456"
17336
+ "example": "dataspace-app-dataset-1"
17323
17337
  }
17324
17338
  ],
17325
17339
  "security": [
@@ -17327,19 +17341,647 @@
17327
17341
  "jwtBearerAuthScheme": []
17328
17342
  }
17329
17343
  ],
17344
+ "requestBody": {
17345
+ "description": "API request to update an existing app dataset record.",
17346
+ "required": true,
17347
+ "content": {
17348
+ "application/json": {
17349
+ "schema": {
17350
+ "$ref": "#/components/schemas/AppDatasetUpdateRequest"
17351
+ },
17352
+ "examples": {
17353
+ "datasetUpdateRequestExample": {
17354
+ "value": {
17355
+ "appId": "https://twin.example.org/app1",
17356
+ "dataset": {
17357
+ "@context": "https://w3id.org/dspace/2025/1/context.jsonld",
17358
+ "@type": "Dataset",
17359
+ "hasPolicy": [],
17360
+ "distribution": []
17361
+ }
17362
+ }
17363
+ }
17364
+ }
17365
+ }
17366
+ }
17367
+ },
17330
17368
  "responses": {
17331
- "200": {
17332
- "description": "The response structure for getting a policy.",
17369
+ "204": {
17370
+ "description": "The rest request ended in success with no data."
17371
+ },
17372
+ "400": {
17373
+ "description": "The server cannot process the request, see the content for more details.",
17333
17374
  "content": {
17334
17375
  "application/json": {
17335
17376
  "schema": {
17336
- "$ref": "#/components/schemas/RightsManagementPolicy"
17377
+ "$ref": "#/components/schemas/Error"
17337
17378
  },
17338
17379
  "examples": {
17339
- "papGetResponseExample": {
17380
+ "exampleResponse": {
17340
17381
  "value": {
17341
- "@context": "http://www.w3.org/ns/odrl.jsonld",
17342
- "@type": "Set",
17382
+ "name": "GeneralError",
17383
+ "message": "errorMessage",
17384
+ "properties": {
17385
+ "foo": "bar"
17386
+ }
17387
+ }
17388
+ }
17389
+ }
17390
+ }
17391
+ }
17392
+ },
17393
+ "401": {
17394
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
17395
+ "content": {
17396
+ "application/json": {
17397
+ "schema": {
17398
+ "$ref": "#/components/schemas/Error"
17399
+ },
17400
+ "examples": {
17401
+ "exampleResponse": {
17402
+ "value": {
17403
+ "name": "UnauthorizedError",
17404
+ "message": "errorMessage"
17405
+ }
17406
+ }
17407
+ }
17408
+ }
17409
+ }
17410
+ },
17411
+ "404": {
17412
+ "description": "The resource you tried to access does not exist, see the content for more details.",
17413
+ "content": {
17414
+ "application/json": {
17415
+ "schema": {
17416
+ "$ref": "#/components/schemas/NotFoundResponse"
17417
+ },
17418
+ "examples": {
17419
+ "exampleResponse": {
17420
+ "value": {
17421
+ "name": "NotFoundError",
17422
+ "message": "errorMessage",
17423
+ "properties": {
17424
+ "notFoundId": "1"
17425
+ }
17426
+ }
17427
+ }
17428
+ }
17429
+ }
17430
+ }
17431
+ },
17432
+ "500": {
17433
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
17434
+ "content": {
17435
+ "application/json": {
17436
+ "schema": {
17437
+ "$ref": "#/components/schemas/Error"
17438
+ },
17439
+ "examples": {
17440
+ "exampleResponse": {
17441
+ "value": {
17442
+ "name": "InternalServerError",
17443
+ "message": "errorMessage"
17444
+ }
17445
+ }
17446
+ }
17447
+ }
17448
+ }
17449
+ }
17450
+ }
17451
+ },
17452
+ "delete": {
17453
+ "operationId": "datasetDelete",
17454
+ "summary": "Delete an app dataset owned by the calling tenant.",
17455
+ "tags": [
17456
+ "Datasets"
17457
+ ],
17458
+ "parameters": [
17459
+ {
17460
+ "name": "id",
17461
+ "description": "The stored dataset id.",
17462
+ "in": "path",
17463
+ "required": true,
17464
+ "schema": {
17465
+ "type": "string"
17466
+ },
17467
+ "style": "simple",
17468
+ "example": "dataspace-app-dataset-1"
17469
+ }
17470
+ ],
17471
+ "security": [
17472
+ {
17473
+ "jwtBearerAuthScheme": []
17474
+ }
17475
+ ],
17476
+ "responses": {
17477
+ "204": {
17478
+ "description": "The rest request ended in success with no data."
17479
+ },
17480
+ "400": {
17481
+ "description": "The server cannot process the request, see the content for more details.",
17482
+ "content": {
17483
+ "application/json": {
17484
+ "schema": {
17485
+ "$ref": "#/components/schemas/Error"
17486
+ },
17487
+ "examples": {
17488
+ "exampleResponse": {
17489
+ "value": {
17490
+ "name": "GeneralError",
17491
+ "message": "errorMessage",
17492
+ "properties": {
17493
+ "foo": "bar"
17494
+ }
17495
+ }
17496
+ }
17497
+ }
17498
+ }
17499
+ }
17500
+ },
17501
+ "401": {
17502
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
17503
+ "content": {
17504
+ "application/json": {
17505
+ "schema": {
17506
+ "$ref": "#/components/schemas/Error"
17507
+ },
17508
+ "examples": {
17509
+ "exampleResponse": {
17510
+ "value": {
17511
+ "name": "UnauthorizedError",
17512
+ "message": "errorMessage"
17513
+ }
17514
+ }
17515
+ }
17516
+ }
17517
+ }
17518
+ },
17519
+ "404": {
17520
+ "description": "The resource you tried to access does not exist, see the content for more details.",
17521
+ "content": {
17522
+ "application/json": {
17523
+ "schema": {
17524
+ "$ref": "#/components/schemas/NotFoundResponse"
17525
+ },
17526
+ "examples": {
17527
+ "exampleResponse": {
17528
+ "value": {
17529
+ "name": "NotFoundError",
17530
+ "message": "errorMessage",
17531
+ "properties": {
17532
+ "notFoundId": "1"
17533
+ }
17534
+ }
17535
+ }
17536
+ }
17537
+ }
17538
+ }
17539
+ },
17540
+ "500": {
17541
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
17542
+ "content": {
17543
+ "application/json": {
17544
+ "schema": {
17545
+ "$ref": "#/components/schemas/Error"
17546
+ },
17547
+ "examples": {
17548
+ "exampleResponse": {
17549
+ "value": {
17550
+ "name": "InternalServerError",
17551
+ "message": "errorMessage"
17552
+ }
17553
+ }
17554
+ }
17555
+ }
17556
+ }
17557
+ }
17558
+ }
17559
+ }
17560
+ },
17561
+ "/rights-management/policy/admin": {
17562
+ "post": {
17563
+ "operationId": "papCreate",
17564
+ "summary": "Create a policy",
17565
+ "tags": [
17566
+ "Policy Administration Point"
17567
+ ],
17568
+ "security": [
17569
+ {
17570
+ "jwtBearerAuthScheme": []
17571
+ }
17572
+ ],
17573
+ "requestBody": {
17574
+ "description": "The request structure for creating a policy.",
17575
+ "required": true,
17576
+ "content": {
17577
+ "application/json": {
17578
+ "schema": {
17579
+ "$ref": "#/components/schemas/PapCreateRequest"
17580
+ },
17581
+ "examples": {
17582
+ "papCreateRequestExample": {
17583
+ "value": {
17584
+ "@context": "http://www.w3.org/ns/odrl.jsonld",
17585
+ "@type": "Set",
17586
+ "permission": [
17587
+ {
17588
+ "target": "http://example.com/asset/1",
17589
+ "action": "use"
17590
+ }
17591
+ ]
17592
+ }
17593
+ }
17594
+ }
17595
+ }
17596
+ }
17597
+ },
17598
+ "responses": {
17599
+ "201": {
17600
+ "description": "The rest request ended in created response.",
17601
+ "headers": {
17602
+ "location": {
17603
+ "schema": {
17604
+ "type": "string"
17605
+ },
17606
+ "description": "e.g. urn:rights-management:abc123def456"
17607
+ }
17608
+ }
17609
+ },
17610
+ "400": {
17611
+ "description": "The server cannot process the request, see the content for more details.",
17612
+ "content": {
17613
+ "application/json": {
17614
+ "schema": {
17615
+ "$ref": "#/components/schemas/Error"
17616
+ },
17617
+ "examples": {
17618
+ "exampleResponse": {
17619
+ "value": {
17620
+ "name": "GeneralError",
17621
+ "message": "errorMessage",
17622
+ "properties": {
17623
+ "foo": "bar"
17624
+ }
17625
+ }
17626
+ }
17627
+ }
17628
+ }
17629
+ }
17630
+ },
17631
+ "401": {
17632
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
17633
+ "content": {
17634
+ "application/json": {
17635
+ "schema": {
17636
+ "$ref": "#/components/schemas/Error"
17637
+ },
17638
+ "examples": {
17639
+ "exampleResponse": {
17640
+ "value": {
17641
+ "name": "UnauthorizedError",
17642
+ "message": "errorMessage"
17643
+ }
17644
+ }
17645
+ }
17646
+ }
17647
+ }
17648
+ },
17649
+ "500": {
17650
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
17651
+ "content": {
17652
+ "application/json": {
17653
+ "schema": {
17654
+ "$ref": "#/components/schemas/Error"
17655
+ },
17656
+ "examples": {
17657
+ "exampleResponse": {
17658
+ "value": {
17659
+ "name": "InternalServerError",
17660
+ "message": "errorMessage"
17661
+ }
17662
+ }
17663
+ }
17664
+ }
17665
+ }
17666
+ }
17667
+ }
17668
+ },
17669
+ "get": {
17670
+ "operationId": "papQuery",
17671
+ "summary": "Query policies",
17672
+ "tags": [
17673
+ "Policy Administration Point"
17674
+ ],
17675
+ "parameters": [
17676
+ {
17677
+ "name": "assigner",
17678
+ "description": "The assigner to filter by.",
17679
+ "in": "query",
17680
+ "required": false,
17681
+ "schema": {
17682
+ "type": "string"
17683
+ }
17684
+ },
17685
+ {
17686
+ "name": "assignee",
17687
+ "description": "The assignee to filter by.",
17688
+ "in": "query",
17689
+ "required": false,
17690
+ "schema": {
17691
+ "type": "string"
17692
+ }
17693
+ },
17694
+ {
17695
+ "name": "action",
17696
+ "description": "The action to filter by.",
17697
+ "in": "query",
17698
+ "required": false,
17699
+ "schema": {
17700
+ "type": "string"
17701
+ }
17702
+ },
17703
+ {
17704
+ "name": "target",
17705
+ "description": "The target to filter by.",
17706
+ "in": "query",
17707
+ "required": false,
17708
+ "schema": {
17709
+ "type": "string"
17710
+ }
17711
+ },
17712
+ {
17713
+ "name": "conditions",
17714
+ "description": "The condition for the query.",
17715
+ "in": "query",
17716
+ "required": false,
17717
+ "schema": {
17718
+ "type": "string"
17719
+ }
17720
+ },
17721
+ {
17722
+ "name": "limit",
17723
+ "description": "Limit the number of entities to return.",
17724
+ "in": "query",
17725
+ "required": false,
17726
+ "schema": {
17727
+ "type": "string"
17728
+ }
17729
+ },
17730
+ {
17731
+ "name": "cursor",
17732
+ "description": "The cursor to get next chunk of data, returned in previous response.",
17733
+ "in": "query",
17734
+ "required": false,
17735
+ "schema": {
17736
+ "type": "string"
17737
+ },
17738
+ "example": "optional-pagination-cursor"
17739
+ }
17740
+ ],
17741
+ "security": [
17742
+ {
17743
+ "jwtBearerAuthScheme": []
17744
+ }
17745
+ ],
17746
+ "responses": {
17747
+ "200": {
17748
+ "description": "The response structure for querying policies.",
17749
+ "content": {
17750
+ "application/json": {
17751
+ "schema": {
17752
+ "$ref": "#/components/schemas/PapQueryResponse"
17753
+ },
17754
+ "examples": {
17755
+ "papQueryResponseExample": {
17756
+ "value": [
17757
+ {
17758
+ "@context": "http://www.w3.org/ns/odrl.jsonld",
17759
+ "@type": "Set",
17760
+ "@id": "urn:rights-management:abc123def456",
17761
+ "permission": [
17762
+ {
17763
+ "target": "http://example.com/asset/1",
17764
+ "action": "use"
17765
+ }
17766
+ ]
17767
+ }
17768
+ ]
17769
+ }
17770
+ }
17771
+ }
17772
+ }
17773
+ },
17774
+ "400": {
17775
+ "description": "The server cannot process the request, see the content for more details.",
17776
+ "content": {
17777
+ "application/json": {
17778
+ "schema": {
17779
+ "$ref": "#/components/schemas/Error"
17780
+ },
17781
+ "examples": {
17782
+ "exampleResponse": {
17783
+ "value": {
17784
+ "name": "GeneralError",
17785
+ "message": "errorMessage",
17786
+ "properties": {
17787
+ "foo": "bar"
17788
+ }
17789
+ }
17790
+ }
17791
+ }
17792
+ }
17793
+ }
17794
+ },
17795
+ "401": {
17796
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
17797
+ "content": {
17798
+ "application/json": {
17799
+ "schema": {
17800
+ "$ref": "#/components/schemas/Error"
17801
+ },
17802
+ "examples": {
17803
+ "exampleResponse": {
17804
+ "value": {
17805
+ "name": "UnauthorizedError",
17806
+ "message": "errorMessage"
17807
+ }
17808
+ }
17809
+ }
17810
+ }
17811
+ }
17812
+ },
17813
+ "500": {
17814
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
17815
+ "content": {
17816
+ "application/json": {
17817
+ "schema": {
17818
+ "$ref": "#/components/schemas/Error"
17819
+ },
17820
+ "examples": {
17821
+ "exampleResponse": {
17822
+ "value": {
17823
+ "name": "InternalServerError",
17824
+ "message": "errorMessage"
17825
+ }
17826
+ }
17827
+ }
17828
+ }
17829
+ }
17830
+ }
17831
+ }
17832
+ }
17833
+ },
17834
+ "/rights-management/policy/admin/{id}": {
17835
+ "put": {
17836
+ "operationId": "papUpdate",
17837
+ "summary": "Update a policy",
17838
+ "tags": [
17839
+ "Policy Administration Point"
17840
+ ],
17841
+ "parameters": [
17842
+ {
17843
+ "name": "id",
17844
+ "description": "The ID of the policy to update.",
17845
+ "in": "path",
17846
+ "required": true,
17847
+ "schema": {
17848
+ "type": "string"
17849
+ },
17850
+ "style": "simple",
17851
+ "example": "urn:rights-management:abc123def456"
17852
+ }
17853
+ ],
17854
+ "security": [
17855
+ {
17856
+ "jwtBearerAuthScheme": []
17857
+ }
17858
+ ],
17859
+ "requestBody": {
17860
+ "description": "The request structure for updating a policy.",
17861
+ "required": true,
17862
+ "content": {
17863
+ "application/json": {
17864
+ "schema": {
17865
+ "$ref": "#/components/schemas/RightsManagementPolicy"
17866
+ },
17867
+ "examples": {
17868
+ "papUpdateRequestExample": {
17869
+ "value": {
17870
+ "@context": "http://www.w3.org/ns/odrl.jsonld",
17871
+ "@type": "Set",
17872
+ "@id": "urn:rights-management:abc123def456",
17873
+ "permission": [
17874
+ {
17875
+ "target": "http://example.com/asset/2",
17876
+ "action": "read"
17877
+ }
17878
+ ]
17879
+ }
17880
+ }
17881
+ }
17882
+ }
17883
+ }
17884
+ },
17885
+ "responses": {
17886
+ "204": {
17887
+ "description": "The rest request ended in success with no data."
17888
+ },
17889
+ "400": {
17890
+ "description": "The server cannot process the request, see the content for more details.",
17891
+ "content": {
17892
+ "application/json": {
17893
+ "schema": {
17894
+ "$ref": "#/components/schemas/Error"
17895
+ },
17896
+ "examples": {
17897
+ "exampleResponse": {
17898
+ "value": {
17899
+ "name": "GeneralError",
17900
+ "message": "errorMessage",
17901
+ "properties": {
17902
+ "foo": "bar"
17903
+ }
17904
+ }
17905
+ }
17906
+ }
17907
+ }
17908
+ }
17909
+ },
17910
+ "401": {
17911
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
17912
+ "content": {
17913
+ "application/json": {
17914
+ "schema": {
17915
+ "$ref": "#/components/schemas/Error"
17916
+ },
17917
+ "examples": {
17918
+ "exampleResponse": {
17919
+ "value": {
17920
+ "name": "UnauthorizedError",
17921
+ "message": "errorMessage"
17922
+ }
17923
+ }
17924
+ }
17925
+ }
17926
+ }
17927
+ },
17928
+ "500": {
17929
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
17930
+ "content": {
17931
+ "application/json": {
17932
+ "schema": {
17933
+ "$ref": "#/components/schemas/Error"
17934
+ },
17935
+ "examples": {
17936
+ "exampleResponse": {
17937
+ "value": {
17938
+ "name": "InternalServerError",
17939
+ "message": "errorMessage"
17940
+ }
17941
+ }
17942
+ }
17943
+ }
17944
+ }
17945
+ }
17946
+ }
17947
+ },
17948
+ "get": {
17949
+ "operationId": "papGet",
17950
+ "summary": "Get a policy",
17951
+ "tags": [
17952
+ "Policy Administration Point"
17953
+ ],
17954
+ "parameters": [
17955
+ {
17956
+ "name": "id",
17957
+ "description": "The ID of the policy to get.",
17958
+ "in": "path",
17959
+ "required": true,
17960
+ "schema": {
17961
+ "type": "string"
17962
+ },
17963
+ "style": "simple",
17964
+ "example": "urn:rights-management:abc123def456"
17965
+ }
17966
+ ],
17967
+ "security": [
17968
+ {
17969
+ "jwtBearerAuthScheme": []
17970
+ }
17971
+ ],
17972
+ "responses": {
17973
+ "200": {
17974
+ "description": "The response structure for getting a policy.",
17975
+ "content": {
17976
+ "application/json": {
17977
+ "schema": {
17978
+ "$ref": "#/components/schemas/RightsManagementPolicy"
17979
+ },
17980
+ "examples": {
17981
+ "papGetResponseExample": {
17982
+ "value": {
17983
+ "@context": "http://www.w3.org/ns/odrl.jsonld",
17984
+ "@type": "Set",
17343
17985
  "@id": "urn:rights-management:abc123def456",
17344
17986
  "permission": [
17345
17987
  {
@@ -19544,6 +20186,65 @@
19544
20186
  }
19545
20187
  }
19546
20188
  },
20189
+ "AppDatasetCreateRequest": {
20190
+ "type": "object",
20191
+ "properties": {
20192
+ "id": {
20193
+ "type": "string",
20194
+ "description": "Optional explicit id for the stored dataset record. If omitted, the\nControl Plane derives the id from `dataset[\"@id\"]` if present, or\ngenerates a UUID otherwise. The resolved id is returned via the\n`Location` response header."
20195
+ },
20196
+ "appId": {
20197
+ "type": "string",
20198
+ "description": "The dataspace app this dataset belongs to. Matches the app's\nregistered name in `DataspaceAppFactory` (typically the app's URI)."
20199
+ },
20200
+ "dataset": {
20201
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolDataset"
20202
+ }
20203
+ },
20204
+ "required": [
20205
+ "appId",
20206
+ "dataset"
20207
+ ],
20208
+ "description": "The body of the request."
20209
+ },
20210
+ "AppDatasetCreateResponse": {},
20211
+ "AppDatasetListResponse": {
20212
+ "type": "object",
20213
+ "properties": {
20214
+ "entities": {
20215
+ "type": "array",
20216
+ "items": {
20217
+ "$ref": "#/components/schemas/DataspaceAppDataset"
20218
+ },
20219
+ "description": "The stored datasets."
20220
+ },
20221
+ "cursor": {
20222
+ "type": "string",
20223
+ "description": "Cursor to fetch the next page if more entries exist."
20224
+ }
20225
+ },
20226
+ "required": [
20227
+ "entities"
20228
+ ],
20229
+ "description": "The body of the response."
20230
+ },
20231
+ "AppDatasetUpdateRequest": {
20232
+ "type": "object",
20233
+ "properties": {
20234
+ "appId": {
20235
+ "type": "string",
20236
+ "description": "The dataspace app this dataset belongs to. May change appId on\nupdate if the tenant wants to retarget the dataset."
20237
+ },
20238
+ "dataset": {
20239
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolDataset"
20240
+ }
20241
+ },
20242
+ "required": [
20243
+ "appId",
20244
+ "dataset"
20245
+ ],
20246
+ "description": "The body of the request."
20247
+ },
19547
20248
  "AttestationCreateRequest": {
19548
20249
  "type": "object",
19549
20250
  "properties": {
@@ -20303,6 +21004,38 @@
20303
21004
  ],
20304
21005
  "description": "The data to be used in the store."
20305
21006
  },
21007
+ "DataspaceAppDataset": {
21008
+ "description": "Stored dataset record returned by the Control Plane's dataset CRUD surface.",
21009
+ "type": "object",
21010
+ "properties": {
21011
+ "id": {
21012
+ "type": "string",
21013
+ "description": "The stored dataset id (matches the dataset's JSON-LD `@id`)."
21014
+ },
21015
+ "appId": {
21016
+ "type": "string",
21017
+ "description": "The dataspace app this dataset belongs to."
21018
+ },
21019
+ "dataset": {
21020
+ "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolDataset"
21021
+ },
21022
+ "dateCreated": {
21023
+ "type": "string",
21024
+ "description": "Creation timestamp (ISO string)."
21025
+ },
21026
+ "dateModified": {
21027
+ "type": "string",
21028
+ "description": "Last-modified timestamp (ISO string)."
21029
+ }
21030
+ },
21031
+ "required": [
21032
+ "id",
21033
+ "appId",
21034
+ "dataset",
21035
+ "dateCreated",
21036
+ "dateModified"
21037
+ ]
21038
+ },
20306
21039
  "DocumentManagementCreateRequest": {
20307
21040
  "type": "object",
20308
21041
  "properties": {
@@ -20483,33 +21216,36 @@
20483
21216
  "description": "Provides health information for a component.",
20484
21217
  "type": "object",
20485
21218
  "properties": {
20486
- "name": {
21219
+ "source": {
20487
21220
  "type": "string",
20488
- "description": "The name of the component."
21221
+ "description": "The source of the health information."
20489
21222
  },
20490
21223
  "description": {
20491
21224
  "type": "string",
20492
21225
  "description": "The description of the component as an i18n key."
20493
21226
  },
20494
- "isChild": {
20495
- "type": "boolean",
20496
- "description": "Whether this entry is a child of another entry, the parent entry will report the overall status of the component."
20497
- },
20498
21227
  "status": {
20499
21228
  "$ref": "#/components/schemas/HealthStatus"
20500
21229
  },
20501
- "details": {
21230
+ "message": {
20502
21231
  "type": "string",
20503
- "description": "The details for the status if there are further details to provide as an i18n key."
21232
+ "description": "The message for the status if there are further details to provide as an i18n key."
20504
21233
  },
20505
- "properties": {
21234
+ "data": {
20506
21235
  "type": "object",
20507
21236
  "additionalProperties": {},
20508
- "description": "Properties to substitute in the i18n key for the details."
21237
+ "description": "Data to substitute in the i18n key for the message."
21238
+ },
21239
+ "grouped": {
21240
+ "type": "array",
21241
+ "items": {
21242
+ "$ref": "#/components/schemas/Health"
21243
+ },
21244
+ "description": "The grouped child components, if any."
20509
21245
  }
20510
21246
  },
20511
21247
  "required": [
20512
- "name",
21248
+ "source",
20513
21249
  "status"
20514
21250
  ]
20515
21251
  },
@@ -22186,6 +22922,10 @@
22186
22922
  "unit": {
22187
22923
  "type": "string",
22188
22924
  "description": "The unit the metric describes."
22925
+ },
22926
+ "maxHistory": {
22927
+ "type": "number",
22928
+ "description": "The maximum number of values to retain; oldest are trimmed on each addMetricValue call.\nUnlimited when absent."
22189
22929
  }
22190
22930
  },
22191
22931
  "required": [